Virtual machine (VM) images are often saved as files on a hypervisor, as there are several benefits in using files as opposed to dedicated physical block devices. Such benefits can include the following. Files can be thinly provisioned, and thus, allow storage space over-commit. Also, files can be managed (backed up, copied, deleted, etc.) more easily than dedicated block devices.
However, when using a thinly provisioned file as a virtual machine image, file system operations in the guest VM can cause the image file to quickly grow to its fully provisioned size, even when the guest VM's file system size is still far from being full. The fundamental problem is that a hypervisor cannot differentiate whether or not a data block is used by the guest VM or not (for example, if a block is allocated, and then deleted later).
Existing approaches include using a fully provisioned image file that has 1-to-1 mapping with guest file system, as well as using a dedicated physical partition or logic volume. However, the drawback of these approaches is that over-commit is not possible.